# 指定每一个c文件对应的.o文件    
OBJS_THTTPD = shmem.o main.o thttpd.o custom_handle.o msg_queue_peer.o    
OBJS_SLAVES = shmem.o slave_control_collection.o    
    
# 指定编译器    
CC = gcc    
    
# 指定需要的库和路径（如果需要指定库文件路径，请取消下面行的注释）  
LDFLAGS =-lpthread -lmodbus -lm   
     
# thttpd 可执行文件    
thttpd: $(OBJS_THTTPD)    
	$(CC) -o $@ $^ $(LDFLAGS)    
    
# slaves 可执行文件（假设它只需要shmem.o）    
slaves: $(OBJS_SLAVES)    
	$(CC) -o $@ $^ $(LDFLAGS)    
    
# 确保所有依赖文件都被创建后再包含它们  
-include $(foreach f,$(OBJS_THTTPD),$(dir $f).$(notdir $f:.o=.d))    
-include $(foreach f,$(OBJS_SLAVES),$(dir $f).$(notdir $f:.o=.d))    
    
# 编译每个.c文件到.o文件，并生成依赖文件  
%.o: %.c  
	$(CC) -Wp,-MD,$(dir $@).$(notdir $@:.o=.d) -c $< -o $@  
    
# 清理生成的文件    
clean:    
	rm -rf *.o *.d thttpd slaves